Git - Reset Vs. Checkout Vs. Commit